﻿/*
 * Created by SharpDevelop.
 * User: Zoila
 * Date: 20/10/2011
 * Time: 01:46 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data.SqlClient;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using Business_Entity;

namespace DAOFactory
{
	/// <summary>
	/// Description of DAOCaja.
	/// </summary>
	public class DAOCaja
	{
		public DAOCaja()
		{
		}
		public float getTasa(string moneda){
			float  tasa=1;
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCAR_TASA_CAMBIO_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@MONEDA", SqlDbType.VarChar,3);
				cmd.Parameters["@MONEDA"].Value = moneda;
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
											
					
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{	tasa=float.Parse(reader[0].ToString());
							
						}
						catch
						{
							System.Windows.Forms.MessageBox.Show("Error al buscar tasa Cambio(s)","Error");
							reader.Close();
							return tasa;						
						}
					}
					reader.Close();
					return tasa;
				}
				else
				{
					reader.Close();
					return tasa;
				}
			}
			catch
			{
				System.Windows.Forms.MessageBox.Show("Error al buscar Caja(s)","Error");
				
				return tasa;	
			}
		}
		public void nueva(BETienda tienda,string nombre,int emp){
				object estadoTran;
			
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_NUEVA_CAJA_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
			
				
				cmd.Parameters.Add("@TIENDA", SqlDbType.Int);
				cmd.Parameters["@TIENDA"].Value = tienda.Id;
				cmd.Parameters.Add("@NOMBRE", SqlDbType.VarChar,30);
				cmd.Parameters["@NOMBRE"].Value = nombre;
				cmd.Parameters.Add("@EMPLEADO", SqlDbType.Int);
				cmd.Parameters["@EMPLEADO"].Value = emp;
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				cmd.ExecuteNonQuery();
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
			//	return 0;Int32.Parse(estadoTran.ToString());
			
			}
			catch (Exception e )
			{
				System.Windows.Forms.MessageBox.Show("Error al crear Caja " + e.Message,"Error");
			//	return -1;
			}
		}
		public List<BECaja> getCajas(BETienda tienda){
			List<BECaja>  lista=  new List<BECaja>();
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCAR_CAJA_TIENDA_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@Tienda", SqlDbType.Int);
				cmd.Parameters["@Tienda"].Value = tienda.Id;
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
											
					
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{	BECaja_Estado estado=new BECaja_Estado();
							estado.IdEstado=reader[3].ToString();
							estado.Descripcion=reader[4].ToString();/*
							if  (estado.Equals("INI")){
								estado.Descripcion="INICIADA";
							}
							
							if  (estado.Equals("APE")){
								estado.Descripcion="APERTURADA";
							}
							
							if  (estado.Equals("CER")){
								estado.Descripcion="CERRADA";
							}
							//else estado.Descripcion="";*/
							
							BECaja  caja=new BECaja(int.Parse(reader[0].ToString()),reader[1].ToString(),estado,tienda);
							lista.Add(caja);
						}
						catch
						{
							System.Windows.Forms.MessageBox.Show("Error al buscar caja(s)","Error");
							reader.Close();
							return null;						
						}
					}
					reader.Close();
					return lista;
				}
				else
				{
					reader.Close();
					return lista;
				}
			}
			catch
			{
				System.Windows.Forms.MessageBox.Show("Error al buscar Caja(s)","Error");
				
				return lista;	
			}
		}
		
		public List<BECaja> buscarCaja(BETienda tienda,BEEmpleado empleado, BECaja_Estado estado){
			List<BECaja> lista = new List<BECaja>();
			//BETienda tiendaPrueba= new BETienda(1,"Principal");
			//BECaja_Estado estadoPrueba = new BECaja_Estado("INI","Iniciada");
			BECaja cajaPrueba= new BECaja(1,"nombre",estado,tienda);
			lista.Add(cajaPrueba);
			return lista;
		}
		
		public List<BERegistroCaja> buscarRegistroCaja(BETienda tienda,BEEmpleado empleado, BECaja_Estado estado){
			List<BERegistroCaja> lista = new List<BERegistroCaja>();
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCAR_REGISTROCAJA_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@Tienda", SqlDbType.Int);
				cmd.Parameters["@Tienda"].Value = tienda.Id;
				cmd.Parameters.Add("@Empleado", SqlDbType.Int);
				cmd.Parameters["@Empleado"].Value = empleado.IdEmpleado;
				cmd.Parameters.Add("@Estado", SqlDbType.VarChar,3);		
				if (estado != null) {
					cmd.Parameters["@Estado"].Value = estado.IdEstado;
				}
				else {
					cmd.Parameters["@Estado"].Value = "";
				}
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
											
					
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{
							BECaja_Estado estadoAct = new BECaja_Estado();
							estadoAct.IdEstado= reader[3].ToString();
							estadoAct.Descripcion= reader[4].ToString();
							BECaja  caja=new BECaja(int.Parse(reader[1].ToString()),"",estadoAct,tienda);
							BERegistroCaja regCaja = new BERegistroCaja(int.Parse(reader[0].ToString()), caja,empleado);			
							lista.Add(regCaja);
						}
						catch
						{
							System.Windows.Forms.MessageBox.Show("Error al buscar empleado(s)","Error");
							reader.Close();
							return null;						
						}
					}
					reader.Close();
					foreach(BERegistroCaja regCaja in lista)
						llenaNombreCaja(regCaja.Caja);
					return lista;
				}
				else
				{
					reader.Close();
					List<BERegistroCaja> lista2 = new List<BERegistroCaja>();
					return lista2;
				}
			}
			catch
			{
				System.Windows.Forms.MessageBox.Show("Error al buscar Registros de Cajas(s)","Error");
				List<BERegistroCaja> lista2 = new List<BERegistroCaja>();
				return lista2;	
			}

		}
		
		public static bool esCajero(BEEmpleado empleado, int Tienda){
			bool rpta =false;
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_ES_CAJERO_APERTURADA_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDEMPLEADO", SqlDbType.Int);
				cmd.Parameters["@IDEMPLEADO"].Value = empleado.IdEmpleado;
				
				cmd.Parameters.Add("@TIENDA", SqlDbType.Int);
				cmd.Parameters["@TIENDA"].Value = Tienda ; 
							
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
											
				int i = -1;	
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{
							i= int.Parse(reader[0].ToString());
							
						}
						catch
						{
							//System.Windows.Forms.MessageBox.Show("Error al buscar empleado(s)","Error");
							reader.Close();
							return false;						
						}
					}
					reader.Close();
					return (i>=1);
				}
				else
				{
					reader.Close();
					return false;
				}
			}
			catch
			{
				//PetSoft.GUI.Utils.MessageError("Error en sacar los permisos de cajero");
				return false;
			}

		}
		
		public void llenaNombreCaja(BECaja caja){
			//List<BERegistroCaja> lista = new List<BERegistroCaja>();
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCAR_NOMBRE_CAJA_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@Caja", SqlDbType.Int);
				cmd.Parameters["@Caja"].Value = caja.IdCaja;
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
			//	estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
											
					
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{
							caja.Nombre=reader[0].ToString();
						}
						catch
						{
							System.Windows.Forms.MessageBox.Show("Error al buscar caja(s)","Error");
							reader.Close();
							return;						
						}
					}
					reader.Close();
				}
				else
				{
					reader.Close();
					return;
				}
			}
			catch
			{
				//System.Windows.Forms.MessageBox.Show("Error al buscar Nombre de Cajas(s)","Error");
				caja.Nombre="#NO#";
				
			}

			
		}
		public void llenaNombreCajero(BEEmpleado cajero){
			//List<BERegistroCaja> lista = new List<BERegistroCaja>();
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCAR_NOMBRE_CAJERO_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@Cajero", SqlDbType.Int);
				cmd.Parameters["@Cajero"].Value = cajero.IdEmpleado;
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
			//	estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
											
					
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{
							cajero.Nombre=reader[0].ToString();
							cajero.ApPaterno=reader[1].ToString();
							cajero.ApMaterno=reader[2].ToString();
						}
						catch
						{
							System.Windows.Forms.MessageBox.Show("Error al buscar cajero(s)","Error");
							reader.Close();
							return;						
						}
					}
					reader.Close();
				}
				else
				{
					reader.Close();
					return;
				}
			}
			catch
			{
				//System.Windows.Forms.MessageBox.Show("Error al buscar Nombre de Cajas(s)","Error");
				cajero.Nombre="##";
				cajero.ApPaterno="";
				cajero.ApMaterno="";
				
			}

			
		}
		public List<BEDocumentoVenta> regDocumentos (BERegistroCaja reg){
			List<BEDocumentoVenta> lista = new List<BEDocumentoVenta>();
			int resultado=-1;
			int estadoTran=0;
			
			//System.Windows.Forms.MessageBox.Show("REsgitro: "  +reg.IdRegistroCaja.ToString() ,"INFOR");
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCAR_DOCUMENTOS_REGCAJA_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@RegCaja", SqlDbType.Int);
				cmd.Parameters["@RegCaja"].Value = reg.IdRegistroCaja;
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{
							//d.numSerie,d.numDocumento, d.Fecha,d.total, t.idTipoDocumento ,t.Descripcion,d.efectivo,d.tarjeta,m.idMoneda
							BEMoneda moneda=new BEMoneda();
							moneda.CodMoneda=reader[8].ToString();
							if (moneda.CodMoneda.Equals("S/.")) moneda.Descripcion="SOLES";
							else  moneda.Descripcion="DOLARES";
							BETipoDocumentoVenta tipo= new BETipoDocumentoVenta();
							tipo.Codigo= reader[4].ToString();
							tipo.Descripcion=reader[5].ToString();
							
							BEDocumentoVenta doc= new BEDocumentoVenta();
							doc.NumDocumento=Int32.Parse(reader[1].ToString());
							doc.NumSerie=Int32.Parse(reader[0].ToString());
							doc.Fecha=DateTime.Parse(reader[2].ToString());
							doc.Total=float.Parse(reader[3].ToString());
							doc.Tipo=tipo;
							doc.Tarjeta=float.Parse(reader[7].ToString());
							doc.Efectivo=float.Parse(reader[6].ToString());
							doc.Moneda=moneda;
							lista.Add(doc);
							//resultado= 1;
						}
						catch
						{
							System.Windows.Forms.MessageBox.Show("Error al buscar movimientos(s)","Error");
							reader.Close();
							return lista ;						
						}
					}
					reader.Close();
				}
				else
				{
					//System.Windows.Forms.MessageBox.Show("NO SE ENCONTRO NADA detalle(s)","Error");
					reader.Close();
					return lista;
				}
			}
			catch  (Exception e)
			{
				//System.Windows.Forms.MessageBox.Show("Error al buscar Nombre de Cajas(s)","Error");
			//	caja.Nombre="#NO#";
				System.Windows.Forms.MessageBox.Show("Problema al Cargar Detale de Caja "+ e,"Error");
			}
			return lista;
		}
		public int llenaDetalle(BERegistroCaja reg){
			List<BEDetRegCaja> lista = new List<BEDetRegCaja>();
			int resultado=-1;
			int estadoTran=0;
			
			//System.Windows.Forms.MessageBox.Show("REsgitro: "  +reg.IdRegistroCaja.ToString() ,"INFOR");
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCAR_DETALLE_CAJA_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@RegCaja", SqlDbType.Int);
				cmd.Parameters["@RegCaja"].Value = reg.IdRegistroCaja;
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
			//	estadoTran =  int.Parse(cmd.Parameters["@ESTADOTRAN"].Value.ToString());
			//	resultado=estadoTran;//int.Parse(estadoTran.ToString());
			//	System.Windows.Forms.MessageBox.Show("REsultado: "  +resultado ,"INFOR");
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{
							BEDetRegCaja detalle= new BEDetRegCaja();
							detalle.Moneda=reader[0].ToString();
							if (reader[3].ToString()!="")
								detalle.MontoIni=float.Parse(reader[3].ToString());
							if (reader[4].ToString()!="")
								detalle.MontoFin=float.Parse(reader[4].ToString());
							//System.Windows.Forms.MessageBox.Show(detalle.MontoIni + "\n"+detalle.MontoFin,"Warning");
							lista.Add(detalle);
							resultado= 1;
						}
						catch
						{
							System.Windows.Forms.MessageBox.Show("Error al buscar detalle(s)","Error");
							reader.Close();
							return resultado ;						
						}
					}
					reader.Close();
				}
				else
				{
					System.Windows.Forms.MessageBox.Show("NO SE ENCONTRO NADA detalle(s)","Error");
					reader.Close();
					return resultado;
				}
			}
			catch  (Exception e)
			{
				//System.Windows.Forms.MessageBox.Show("Error al buscar Nombre de Cajas(s)","Error");
			//	caja.Nombre="#NO#";
				System.Windows.Forms.MessageBox.Show("Problema al Cargar Detale de Caja "+ e,"Error");
			}
			reg.DetRegistro=lista;
			return resultado;
		}
		
		public List<BERegistroCaja> buscarRegistroCajaEmpleado(BETienda tienda,string empleado, BECaja_Estado estado){
			List<BERegistroCaja> lista = new List<BERegistroCaja>();
			//System.Windows.Forms.MessageBox.Show("n busqueda " +tienda.Id.ToString());
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCAR_REGISTROCAJASINEMPLEADO_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@Tienda", SqlDbType.Int);
				cmd.Parameters["@Tienda"].Value = tienda.Id;
				cmd.Parameters.Add("@Empleado", SqlDbType.VarChar,100);
				cmd.Parameters["@Empleado"].Value = empleado;
				cmd.Parameters.Add("@Estado", SqlDbType.VarChar,3);		
				if (estado != null) {
					cmd.Parameters["@Estado"].Value = estado.IdEstado;
				}
				else {
					cmd.Parameters["@Estado"].Value = "";
				}
				
				
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				
				SqlDataReader reader = cmd.ExecuteReader();			
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
			

				
				
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{
							BEEmpleado emp;
							BECaja_Estado est= new BECaja_Estado(reader[3].ToString(),reader[4].ToString());
							BECaja  caja=new BECaja(int.Parse(reader[1].ToString()),"",est,tienda);
							int idEmpleado=int.Parse(reader[2].ToString());
							if (idEmpleado==-1)
							{						
								 emp = new BEEmpleado(0);
							}
							else {emp = new BEEmpleado(idEmpleado);}
							BERegistroCaja regCaja = new BERegistroCaja(int.Parse(reader[0].ToString()), caja,emp);			
							lista.Add(regCaja);
						}
						catch (Exception e)
						{
							System.Windows.Forms.MessageBox.Show("Error al buscar caja(s), Reader" + e.Message ,"Error");
							reader.Close();
							return null;						
						}
					}
					reader.Close();
					foreach( BERegistroCaja regCaja in lista){
						llenaNombreCaja(regCaja.Caja);
						if (regCaja.Caja.Estado.IdEstado.Equals("APE"))
							llenaNombreCajero(regCaja.Empleado);
					}
					return lista;
				}
				else
				{
					reader.Close();
					List<BERegistroCaja> lista2 = new List<BERegistroCaja>();
					return lista2;
				}
			}
			catch
			{
				System.Windows.Forms.MessageBox.Show("Error al buscar Registros de Cajas(s)","Error");
				List<BERegistroCaja> lista2 = new List<BERegistroCaja>();
				return lista2;	
			}

		}
		
		public List<BECaja_Estado> getEstadosMenosEliminado(){
			List<BECaja_Estado> lista = new List<BECaja_Estado>();
			/*BECaja_Estado c0 = new BECaja_Estado("-1", "<Seleccionar>");
			lista.Add(c0);
			*/
			
			BECaja_Estado c1 = new BECaja_Estado("", "<Seleccionar>");
			lista.Add(c1);
			
			BECaja_Estado c = new BECaja_Estado("INI", "INICIADA");
			lista.Add(c);
			
			
			BECaja_Estado c2 = new BECaja_Estado("APE", "APERTURADA");
			lista.Add(c2);
			
			BECaja_Estado c3 = new BECaja_Estado("CER", "CERRADA");
			lista.Add(c3);
			
			
			return lista;
		}
		
		public int AperturarCaja(BECaja caja,BEEmpleado cajero,float iniSoles, float iniDolar){
			object estadoTran;
			
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_APERTURAR_CAJA_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
			
				
				cmd.Parameters.Add("@IDCAJA", SqlDbType.Int);
				cmd.Parameters["@IDCAJA"].Value = caja.IdCaja;
				cmd.Parameters.Add("@IDEMPLEADO", SqlDbType.Int);
				cmd.Parameters["@IDEMPLEADO"].Value = cajero.IdEmpleado;
			    cmd.Parameters.Add("@INISOLES", SqlDbType.Float);
				cmd.Parameters["@INISOLES"].Value = iniSoles;
				cmd.Parameters.Add("@INIDOLAR", SqlDbType.Float);
				cmd.Parameters["@INIDOLAR"].Value = iniDolar;
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				cmd.ExecuteNonQuery();
				estadoTran =  cmd.Parameters["@ESTADOTRAN"].Value;
				return 0;//Int32.Parse(estadoTran.ToString());
			
			}
			catch
			{
				System.Windows.Forms.MessageBox.Show("Error al Aperturar la Caja","Error");
				return -1;
			}

		}
		
		public void CerrarCaja(BECaja caja,float finSoles, float finDolar){
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_CERRAR_CAJA_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDCAJA", SqlDbType.Int);
				cmd.Parameters["@IDCAJA"].Value = caja.IdCaja;
				cmd.Parameters.Add("@FINSOLES", SqlDbType.Float);
				cmd.Parameters["@FINSOLES"].Value = finSoles;
				cmd.Parameters.Add("@FINDOLAR", SqlDbType.Float);
				cmd.Parameters["@FINDOLAR"].Value = finDolar;
				cmd.Parameters.Add("@ESTADOTRAN", SqlDbType.Int);
				cmd.Parameters["@ESTADOTRAN"].Direction = ParameterDirection.Output;
				cmd.ExecuteNonQuery();
				estadoTran = cmd.Parameters["@ESTADOTRAN"].Value;
			
			}
			catch
			{
				System.Windows.Forms.MessageBox.Show("Error al Cerrar la Caja","Error");
			}

		} 
		
		public void delete(BECaja caja){
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_ELIMINA_CAJA_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@CAJA", SqlDbType.Int);
				cmd.Parameters["@CAJA"].Value = caja.IdCaja;
				cmd.ExecuteNonQuery();
			
			}
			catch
			{
				System.Windows.Forms.MessageBox.Show("Error al eliminar la Caja","Error");
			}
		}
		
		public BEDocumentoVenta buscarRegistroCajaEmpleado(BEPedidoVenta pedido){
			BEDocumentoVenta documentoVenta = new BEDocumentoVenta();
			//System.Windows.Forms.MessageBox.Show("n busqueda " +tienda.Id.ToString());
			object estadoTran;
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_BUSCAR_DOC_VENTA_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				cmd.Parameters.Add("@IDPEDIDOVENTA", SqlDbType.Int);
				cmd.Parameters["@IDPEDIDOVENTA"].Value = pedido.Id;
				
							
				SqlDataReader reader = cmd.ExecuteReader();		
				int cont=0;
				
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{
							//d.idDocumentoVenta,t.idTipoDocumento, t.Descripcion,d.Fecha,
							//d.numSerie,d.numDocumento, d.idMoneda,d.total,d.tasaCambio,l.descripcion 
							//,l.cantidad,l.precioUnitario,l.esDescuento
							if (cont==0){
								documentoVenta.Codigo= Int32.Parse(reader[0].ToString());
								documentoVenta.Tipo.Codigo=reader[1].ToString();
								documentoVenta.Tipo.Descripcion=reader[2].ToString();
								documentoVenta.Fecha=Convert.ToDateTime(reader[3].ToString());
								documentoVenta.NumSerie=Int32.Parse(reader[4].ToString());
								documentoVenta.NumDocumento=Int32.Parse(reader[5].ToString());
								documentoVenta.Moneda.CodMoneda=reader[6].ToString();
								documentoVenta.Total=Convert.ToSingle(reader[7].ToString());
								documentoVenta.Tasa.Moneda=documentoVenta.Moneda.CodMoneda;
								documentoVenta.Tasa.Compra=Convert.ToSingle(reader[8].ToString());
								documentoVenta.Ruc=reader[13].ToString();
								documentoVenta.RazonSocial=reader[14].ToString();
							}
							
							BELineaDocumentoVenta linea= new BELineaDocumentoVenta();
							linea.Descripcion=reader[9].ToString();
							linea.Cantidad=Int32.Parse(reader[10].ToString());
							linea.PrecioUnitario=Convert.ToSingle(reader[11].ToString());
							int desc = Int32.Parse(reader[12].ToString());
							linea.EsDescuento=(desc!=0);
							cont++;	
							
							documentoVenta.Lineas.Add(linea);
						}
						catch (Exception e)
						{
							System.Windows.Forms.MessageBox.Show("Error al buscar documento Venta(s), Reader" + e.Message ,"Error");
							reader.Close();
							return documentoVenta;						
						}
					}
					reader.Close();
					return documentoVenta;
				}
				else
				{
					reader.Close();
					return documentoVenta;
				}
			}
			catch
			{
				return documentoVenta;	
			}

		}
		
		
		public static string getRazon(){
			string razon = "";
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_GET_RAZON_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				SqlDataReader reader = cmd.ExecuteReader();			
					
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{
							razon= reader[0].ToString();
							
						}
						catch
						{
							//System.Windows.Forms.MessageBox.Show("Error al buscar empleado(s)","Error");
							reader.Close();
							return razon;						
						}
					}
					reader.Close();
					return razon;	
				}
				else
				{
					reader.Close();
					return razon;	
				}
			}
			catch
			{
				//PetSoft.GUI.Utils.MessageError("Error en sacar los permisos de cajero");
				return razon;	
			}

		}	
		
		public static string getRUC(){
			string ruc = "";
			try
			{
				SqlCommand cmd = new SqlCommand("VENTAS_GET_RUC_Z", ConnectionManager.getConnection());
				cmd.CommandType = CommandType.StoredProcedure;
				
				SqlDataReader reader = cmd.ExecuteReader();			
					
							
				if (reader.HasRows) 
				{
					while(reader.Read())
					{
						try
						{
							ruc= reader[0].ToString();
							
						}
						catch
						{
							//System.Windows.Forms.MessageBox.Show("Error al buscar empleado(s)","Error");
							reader.Close();
							return ruc;						
						}
					}
					reader.Close();
					return ruc;	
				}
				else
				{
					reader.Close();
					return ruc;	
				}
			}
			catch
			{
				//PetSoft.GUI.Utils.MessageError("Error en sacar los permisos de cajero");
				return ruc;	
			}

		}	
			
		
	}
}
